<?php

// 会员管理

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use DB;
use Session;
use Crypt;

class UserController extends Controller
{
    
	// 查询会员 余额
	public function getVip(Request $request)
	{
		$data = $request->only('phone','vip_price');
		// 获取 要查询的vip手机号
		if( empty($data['phone']) )
		{
			$this -> ajAxReturn( '输入手机号码' );
		}
		// vip订单价格
		if( $data['vip_price']=='' )
		{
			$this -> ajAxReturn( 'vip价格缺失' );
		}
		// 会员信息
		$user_info = DB::table('user')
				-> where( 'phone',$data['phone'] )
				-> first();
		if( !empty($user_info) )
		{
			// 是会员
			$return = array(
				'money'=>$user_info->money,
				'is_can'=>0
			);
			if( $user_info->money >= $data['vip_price'] )
			{
				// 可以支付
				$return['is_can'] = 1 ;
			}else
			{
				$return['cha'] = $data['vip_price']-$user_info->money ;
			}
 			$this -> ajAxReturn( '查询成功',$return );
		}
		// 不是会员
		$this -> ajAxReturn( '不是会员' );
	}
	
	
	// 会员 列表
    public function index( Request $request )
    {
		// 获取路由
		$route_array = request()->route()->getAction();
		$controller = explode("\\",$route_array['controller']);
		$result = explode("@",$controller[3]);
		// 控制器 	$result[0];
		// 方法 	$result[1];
		$auth_final = '';
		foreach( Session::get('auths') as $key=> $auth_info )
		{
			// 符合条件
			if( $auth_info['controller']==$result[0] && $auth_info['func']==$result[1] )
			{
				$auth_final = true;
				break;
			}else
			{
				$auth_final = false;
			}
		} 
		// 权限验证失败
		if( !$auth_final )
		{
			return back()->with( ['authinfo'=>'没有此项权限'] );
		}
		// 获取 搜索 关键词
		$keyword = $request->input('keyword',"");
		if( empty($keyword) )
		{
			// 获取全部
			$one = 'u.id';
			$two = '!=';
			$three = '0';
		}else
		{
			// 会员电话
			$one = 'u.phone';
			$two = 'like';
			$three = '%'.$keyword.'%';
		}
		
		// 查询会员 每页20条数据
		$user = DB::table('user as u')
				// 实际充值 赠送充值 账户余额
				-> select( 'u.id','u.phone','u.realMoney','u.giftMoney','u.money' )
				-> where( $one,$two,$three ) 
				-> orderBy( 'u.id','desc' ) 
				-> paginate(20);
		return view( 'user.list',[ 'user'=>$user,'request'=>$keyword ] );
    
	}
	
	
	// 执行 充值
	public function moneyAdd( Request $request )
	{
		// 接收数据
		$data = $request -> except('_token');
		if( empty($data['user_id']) )
		{
			$this -> ajAxReturn('缺少会员id');
		}
		// 获取 该会员信息
		$user_info = DB::table('user')
				// 实际充值 赠送金额 账户余额
				-> select( 'realMoney','giftMoney','money' )
				-> where( 'id',$data['user_id'] )
				-> first();
		if( empty($user_info) )
		{
			$this -> ajAxReturn('会员id有误');
		}
		if( !isset($data['realMoney']) )
		{
			$this -> ajAxReturn('缺少充值金额');
		}
		$insert = array();
		// 正则 为整数 1到5位
		$pattern = "/^\d{1,5}$/";
		preg_match_all($pattern,$data['realMoney'],$money_arr);
		// 符合格式条件
		if( count($money_arr[0])>0 )
		{
			// 金额小于0
			if( $money_arr[0][0]<=0 )
			{
				$this -> ajAxReturn('请重新输入充值金额');
			}
			// 累计 实际充值金额
			$insert['realMoney'] = $user_info->realMoney += $money_arr[0][0];
			// 累计 余额 = 实际 + 赠送
			$insert['money'] = $user_info->money += $money_arr[0][0];
		}else
		{
			// 不符合格式条件
			$this -> ajAxReturn('请重新输入充值金额');
		}
		// 赠送金额
		if( !empty($data['giftMoney']) )
		{
			preg_match_all($pattern,$data['giftMoney'],$gift_arr);
			// 符合格式条件
			if( count($gift_arr[0])>0 )
			{
				// 金额小于0
				if( $gift_arr[0][0]<=0 )
				{
					$this -> ajAxReturn('请重新输入赠送金额');
				}
				
				// 累计 赠送金额
				$insert['giftMoney'] = $user_info->giftMoney += $gift_arr[0][0];
				// 累计 余额 = 实际 + 赠送
				$insert['money'] = $user_info->money += $gift_arr[0][0];
				
			}else
			{
				// 不符合格式条件
				$this -> ajAxReturn('请重新输入赠送金额');
			}
			
		}
		
		// 执行充值
		$chongzhi = DB::table('user')
				-> where( 'id',$data['user_id'] )
				-> update( $insert );
		if( $chongzhi )
		{
			// 赠送金额
			$gift = isset($gift_arr[0][0]) ? $gift_arr[0][0] : 0;
			$user_log = array(
				'user_id' => $data['user_id'],
				'desc' => '充值金额:'.$money_arr[0][0]."元&nbsp;&nbsp; 赠送金额:".$gift.'元&nbsp;&nbsp; 余额为:'.$insert['money'],
				'admin_id' => Session::get('admin_id'),
				'log_at' => date( 'Y-m-d H:i:s',time() ),
			
			);
			// 写进日志记录
			DB::table('user_log')->insertGetId( $user_log );
			$this -> ajAxReturn('充值成功');
		}
		
		$this -> ajAxReturn('充值失败');
		
	}
	
	
	// 获取 会员的充值 记录
	public function getLog( Request $request )
	{	
		$data = $request -> except('_token');
		if( !isset($data['user_id']) )
		{
			exit('缺少用户id');
		}
		$logs = DB::table('user_log as ul')
				// 充值时间 操作说明 操作者 会员电话 
				-> select( 'ul.log_at','ul.desc','a.name as adminName','u.phone' )
				-> leftJoin('admin as a','a.id','=','ul.admin_id')
				-> leftJoin('user as u','u.id','=','ul.user_id')
				-> where( 'ul.user_id',$data['user_id'] )
				-> orderBy('ul.log_at','desc')
				-> get();
		$html = "";
		foreach( $logs as $info )
		{
			$html .= "<div  style='height:70px;width:100%;display:block;float:left;'>";
			$html .= "	<h3 class='popover-title'>".$info->log_at."</h3>";
			$html .= "	<div class='popover-content'>".$info->adminName.' 为 '.$info->phone.' '.$info->desc."</div>";
			$html .= "</div>";
		}
		exit($html);
	}
	
	
	// 会员 添加 编辑 页面
    public function add( $user_id='' )
    {
		// 获取路由
		$route_array = request()->route()->getAction();
		$controller = explode("\\",$route_array['controller']);
		$result = explode("@",$controller[3]);
		// 控制器 	$result[0];
		// 方法 	$result[1];
		$auth_final = '';
		foreach( Session::get('auths') as $key=> $auth_info )
		{
			// 符合条件
			if( $auth_info['controller']==$result[0] && $auth_info['func']==$result[1] )
			{
				$auth_final = true;
				break;
			}else
			{
				$auth_final = false;
			}
		} 
		// 权限验证失败
		if( !$auth_final )
		{
			return back()->with( ['authinfo'=>'没有此项权限'] );
		}
		if( $user_id=='' )
		{
			// 添加
			return view( 'user.add' );
		}else
		{
			// 编辑
			$user_info = DB::table('user')
					-> where('id', $user_id)
					-> first();
			return view( 'user.add',[ 'user_info'=>$user_info ] );
		}
		
    }
	
	
	// 执行 会员 添加 编辑
    public function doAdd( Request $request )
    {
		$data = $request -> except('_token');
		if( !isset($data['phone']) )
		{
			$this->ajAxReturn('请输入手机号码');
		}
		// 电话已存在
		$user_history = DB::table('user')
				-> where( 'phone', $data['phone'] )
				-> first();
		if( !empty($user_history) )
		{
			$this->ajAxReturn('手机号码已存在');
		}
		$user_id = isset($data['user_id']) ? $data['user_id'] : '';
		unset( $data['user_id'] );
		if( $user_id=='' )
		{
			// 添加会员
			$data['reg_at'] = date( 'Y-m-d H:i:s',time() );
			// 创建
			$insert_id = DB::table('user')->insertGetId( $data );
			if( $insert_id )
			{
				$this->ajAxReturn( '会员创建成功' );
			}
			
			$this->ajAxReturn( '会员创建失败' );
			
		}else
		{
			// 编辑会员
			$update = DB::table('user')
					-> where( 'id',$user_id )
					-> update( $data );
			if( $update )
			{
				$this -> ajAxReturn( '会员编辑成功' );
			}
			
			$this -> ajAxReturn( '会员编辑失败' );
		}
    }
	
	
	


}
